The present invention relates to data storage devices, and more specifically, to a memory management system and method for improving write-erase endurance lifetime of a flash-based solid state drive (SDD) device via data placement, garbage collection and wear-leveling processes.
Currently, SSD devices based on NAND-flash memories are used as the primary storage in computer architecture, ranging from notebooks to enterprise storage systems. These devices provide random I/O performance and access latency that are orders of magnitude better than that of rotating hard-disk drives (HDD). Moreover, SSDs significantly reduce power consumption and dramatically improve robustness and shock resistance. NAND-flash memories are organized in terms of blocks, where each block consists of a fixed number of pages and the block is the elementary unit for an erase operation, whereas reads and writes are processed in terms of pages. Before data can be written to a page (the page is programmed with the data) in a block, the block has to be erased beforehand. Having larger blocks as the unit of erase and smaller pages as the unit of read and write in an SSD leads to “write amplification” where the SSD has to do overhead housekeeping writes when servicing user writes from the host system. The NAND-flash memories have a limited write-erase cycle count. Typically, flash chips based on single-level cells (SLC) sustain 105 and those based on multi-level cells (MLC) 104 program-erase cycles.
Flash memory uses relocate-on-write (i.e., out-of-place write) for performance reasons, for example. If write-in-place is used instead, flash will exhibit high latency due to the necessary reading, erasing and reprogramming (i.e., writing) of the entire block in which the data is being updated. The management of out-of-place updates involves a mapping between logical block addresses (LBA) that are assigned to each user page write, and physical block addresses (PBA) which are the physical page addresses in flash memory.
Relocate-on-write necessitates a garbage collection process which results in a performance penalty for additional read and write operations. The number of read and write operations resulting from garbage collection depends on the block utilization.
Flash memory blocks eventually wear out with progressing number of write-erase cycles until they can no longer be erased or written. Wear-leveling techniques are therefore used to exhaust the cycle budget of as many blocks as possible, in order to serve as many user writes as possible (i.e., to maximize endurance). The SSD device may eventually die with a number of unconsumed cycle budget left when garbage collection can no longer return a free block, referred to as “wear-leveling insufficiency”.
Uneven wear-out of flash memory blocks is mainly due to spatial localities in workloads. The wear-out of blocks gradually becomes increasingly unbalanced. Static wear-leveling is commonly used to deal with this cause of uneven wear-out by forcing the migration of cold data (i.e., data which is not updated frequently) from new blocks to old blocks and freeing the newer blocks for holding hot data. The increase of write amplification due to static wear-leveling depends on how frequently cold data is moved around. Both garbage collection and wear-leveling contribute write operations in addition to user writes, hence, the write-erase endurance lifetime which can be measured by the total number of user writes that can be served, depends on the total cycle budget available, write amplification, and the eventual unconsumed cycle budget due to wear-leveling insufficiency.
Today, wear-leveling has been recognized as a standard way to improve the endurance lifetime of flash-based SSD devices. However, the endurance lifetime of the SSD device depends not only on wear-leveling but also data placement and garbage collection.